home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / compsrc.lha / tc_in1.0_by_adam.s < prev   
Encoding:
Text File  |  1991-09-23  |  32.6 KB  |  1,707 lines

  1. **************************************************
  2. *              _     _______ _   __              *
  3. *             ///\  /___ __// \ /__\             *
  4. *            ////\\//  //  /_ /// //             *
  5. *           ////  \/  //  // \\\\//              *
  6. *                                                *
  7. *                    by ADAM                     *
  8. *                                                *
  9. **************************************************
  10.  
  11.     jmp    $67000
  12.     org    $67000
  13.     load    $67000
  14.     
  15. **************************************************
  16. *                 COMPANY INTRO                  *
  17. **************************************************
  18.  
  19.  
  20. screens    =    $40000
  21.  
  22. *^^^^^^^^^^^^^^^^^^^^^^
  23. * zum editieren ! bei 1MB CHIPRAM screens = $90000
  24. * ansonsten screens = $40000 ! Translation, make screens =
  25. * $40000 for the skinny bitch agnus. $90000 for the fat bitch.
  26. * or crash at exit...                        HIPPO
  27. *^^^^^^^^^^^^^^^^^^^^^^
  28.  
  29. *********** save ab $67000 - $7f300 **************
  30.  
  31.  
  32. >extern "rnd-stars",$6e400
  33. >extern "company_logo",$7b000
  34. >extern "mod.lback",$70000
  35. >extern "cycle1.dat",$6e800
  36. >extern "cycle2.dat",$6ce00
  37. >extern "font.raw",$6e000
  38.  
  39.     move.l    4,a6
  40.     jsr    -132(a6)
  41.     move.w    #$7fff,$dff096
  42.     move.w    #$7fff,$dff09a
  43.     move.w    #$7fff,$dff09c
  44.     move.w    #000,$dff180
  45.     bsr    stars1inst
  46.     bsr    stars2inst
  47.     bsr    stars3inst
  48.     bsr    clr
  49.     bsr    instcop
  50.     bsr    instmusic
  51.     bsr.w    svgx
  52.     bsr    mgpg
  53.     move.w    #%1000001111100000,$dff096
  54.     move.w    #%1110000000111100,$dff09a
  55.     bsr    part1
  56.     bsr    part2
  57. main_loop:
  58.     bsr    movein
  59.     cmp.w    #-1,flag3
  60.     beq    reallyend
  61.     bsr    wait
  62.     cmp.w    #-1,flag3
  63.     beq    reallyend
  64.     bsr    moveout
  65.     cmp.w    #-1,flag3
  66.     beq    reallyend
  67.     bsr    clr
  68.     bsr    mgpg
  69.     bra    main_loop
  70. reallyend:
  71.     bsr    reinstmusic
  72.     move.l    oldcop,$dff080
  73.     move.w    #%1000001111110000,$dff096
  74.     move.w    #%1100000000111111,$dff09a
  75.     clr.l    d0
  76.     clr.l    d1
  77.     move.l    4,a6
  78.     jsr    -138(a6)
  79.     rts
  80.  
  81. * Das ist die Liste der Textpages die hintereinader angezeigt werden
  82. * Sie muß !!!! mit einer 0 enden !!!!
  83. * in dc.l
  84.  
  85. textpicslake:
  86.     dc.l    textpic1,textpic2,textpic3,textpic4
  87.     dc.l    0
  88.  
  89. * Jedes Textpic muß !! 13 Zeilen hoch sein und muß mit einer 0 enden
  90. * in dc.b
  91.  
  92. textpic1: ;      123456789012345678901234567890123456789012345678
  93.     dc.b    `                                                `
  94.     dc.b    `              t h e  c o m p a n y              `
  95.     dc.b    `                                                `
  96.     dc.b    `                p r e s e n t s:                `  
  97.     dc.b    `                                                `
  98.     dc.b    `                    n a m e                     `
  99.     dc.b    `                                                `
  100.     dc.b    `                                                `
  101.     dc.b    `                                                `
  102.     dc.b    `     hippo was here          hi bill            `
  103.     dc.b    `                                                `
  104.     dc.b    `                                                `
  105.     dc.b    `                                                `
  106.     dc.b    0
  107. textpic2: ;      123456789012345678901234567890123456789012345678
  108.     dc.b    `                                                `
  109.     dc.b    `          c a l l  o u r  b o a r d s           `
  110.     dc.b    `                                                `
  111.     dc.b    `              w o r l d  w i d e:               `
  112.     dc.b    `                                                `  
  113.     dc.b    `  d a n s e  m a c a b r e  disconnected        `
  114.     dc.b    `                                                `
  115.     dc.b    `  t h e  j a m              ditto               `
  116.     dc.b    `                                                `
  117.     dc.b    `  m a i d e n  s o u n d    ditto               `
  118.     dc.b    `                                                `
  119.     dc.b    `  e a g l e s  n e s t      ditto               `
  120.     dc.b    `                                                `
  121.     dc.b    0
  122. textpic3: ;      123456789012345678901234567890123456789012345678
  123.     dc.b    `                                                `
  124.     dc.b    `                                                `
  125.     dc.b    `              o r  w r i t e  t o               `
  126.     dc.b    `                                                `
  127.     dc.b    `                                                `
  128.     dc.b    `                 toon town                      `  
  129.     dc.b    `                 co roger rabbit                `
  130.     dc.b    `                                                `   
  131.     dc.b    `                                                `
  132.     dc.b    `                                                `
  133.     dc.b    `            ---------------------------         `
  134.     dc.b    `                                                `
  135.     dc.b    `                                                `
  136.     dc.b    0
  137. textpic4: ;      123456789012345678901234567890123456789012345678
  138.     dc.b    `                                                `
  139.     dc.b    `                                                `
  140.     dc.b    `                                                `
  141.     dc.b    `       i n t r o  c o d e d  b y  a d a m       `
  142.     dc.b    `                                                `
  143.     dc.b    `                                                `
  144.     dc.b    `          f o n t  b y  f a d e  o n e          `
  145.     dc.b    `                                                `
  146.     dc.b    `                                                `
  147.     dc.b    `      l o g o  p a i n t e d  b y  p i n k      `
  148.     dc.b    `                                                `
  149.     dc.b    `                                                `
  150.     dc.b    `      released 9-22-91  by hippo                `
  151.     dc.b    0 
  152.     even        
  153.  
  154. **************************************************
  155. colorcycle:
  156.  
  157.     lea    color2+2,a0
  158.     lea    color5+2,a2
  159.     lea    colorcycletab,a1
  160.     move.w    colorcyclep,d0
  161.     moveq    #46,d2
  162. colorcycle_l1:
  163.     move.w    (a1,d0.w),d1
  164.     move.w    d1,(a0)
  165.     move.w    d1,(a2)
  166.     sub.l    #4,a2
  167.     add.l    #4,a0
  168.     add.w    #2,d0
  169.     dbf    d2,colorcycle_l1
  170.     cmp.w    #-1,flag7
  171.     beq    colorcycle_j2
  172.     add.w    #2,colorcyclep
  173.     cmp.w    #52*2+[400-52],colorcyclep
  174.     bne    colorcycle_j1
  175.     move.w    #-1,flag7
  176. colorcycle_j1:
  177.     rts
  178. colorcycle_j2:
  179.     sub.w    #2,colorcyclep
  180.     cmp.w    #400-52,colorcyclep
  181.     bne    colorcycle_j1
  182.     move.w    #0,flag7
  183.     rts
  184.  
  185.  
  186. flag7:    dc.w    0
  187. colorcyclep:    dc.w    0
  188. colorbegin:    dc.w    200*2
  189. colorcycletab:    
  190.     blk.w    200,0
  191.  
  192.     dc.w    $000,$000,$000,$001,$002,$003,$004,$005
  193.     dc.w    $006,$007,$008,$009,$00a,$00b,$00c,$00d
  194.     dc.w    $00e,$00f,$01f,$02f,$03f,$04f,$05f,$06f
  195.     dc.w    $07f,$06f,$05f,$04f,$03f,$02f,$01f,$00f
  196.     dc.w    $00e,$00d,$00c,$00b,$00a,$009,$008,$007
  197.     dc.w    $006,$005,$004,$003,$002,$001,$000
  198.  
  199.     blk.w    47*2,0
  200. **************************************************
  201. movein:
  202.     move.l    #$6e800,move
  203.     move.w    #0,flag1
  204.     move.w    #2520,addmove1
  205. movein_l1:
  206.     cmp.b    #$ff,$dff006
  207.     bne    movein_l1
  208.     bsr    movebtpl
  209.     cmp.w    #-1,flag3
  210.     bne    movein_j1
  211.     rts    
  212. movein_j1:
  213.     btst    #6,$bfe001
  214.     beq    movein_end
  215. movein_l2:
  216.     cmp.w    #-24,addmove1
  217.     bne    movein_l1
  218.     add.w    #4,pointer2
  219.     rts
  220. movein_end:
  221.     move.w    #-1,flag2
  222.     move.w    #00,colorcyclep
  223.     move.w    #0,flag7
  224.     bra    movein_l2
  225.  
  226. flag2:    dc.w    0
  227. flag3:    dc.w    0
  228.  
  229. **************************************************
  230. moveout:
  231.     move.l    #$6ce00,move
  232.     move.w    #0,flag1
  233.     move.w    #$10f8,addmove1
  234. moveout_l1:
  235.     cmp.b    #$ff,$dff006
  236.     bne    moveout_l1
  237.     bsr    movebtpl
  238.     cmp.w    #-1,flag3
  239.     bne    moveout_j1
  240.     rts    
  241. moveout_j1:
  242.     btst    #6,$bfe001
  243.     beq    moveout_end
  244. moveout_l2:
  245.     cmp.w    #-96,addmove1
  246.     bne    moveout_l1
  247.     rts
  248. moveout_end:
  249.     move.w    #-1,flag2
  250.     move.w    #00,colorcyclep
  251.     move.w    #0,flag7
  252.     bra    moveout_l2
  253.     
  254. **************************************************
  255. wait:
  256.     cmp.b    #$ff,$dff006
  257.     bne    wait
  258.     cmp.w    #-1,flag6
  259.     bne    wait_l2
  260.     move.l    #1499,wait_counter
  261. wait_l2:
  262.     add.l    #1,wait_counter
  263.     btst    #6,$bfe001
  264.     beq    wait_end
  265. wait_l1:
  266.     cmp.w    #-1,flag3
  267.     beq    wait_j1
  268.     cmp.l    #1500,wait_counter
  269.     bne    wait
  270.     move.l    #0,wait_counter
  271. wait_j1:
  272.     rts
  273. wait_end:
  274.     move.w    #-1,flag2
  275.     move.w    #0,colorcyclep
  276.     move.w    #0,flag7
  277.     bra    wait_l1
  278. wait_counter:    dc.l    0
  279.  
  280. **************************************************
  281. starsstrt = $8d
  282. starsrnds = $6e400
  283. stars1mem = $6c000
  284. stars2mem = $6c300
  285. stars3mem = $6c600
  286. anz1 = 56-1
  287. anz2 = 56-1
  288. anz3 = 56-1
  289.  
  290.                     
  291. * installieren der 1. stars *******************************
  292.  
  293. stars1inst:
  294.     lea    stars1mem,a0
  295.     lea    starsrnds,a1
  296.     move.w    #starsstrt,d1
  297.     moveq    #0,d3
  298.     moveq    #1,d0
  299.     moveq    #anz1,d2
  300. stars1inst_l1:
  301.     lea    star1,a2
  302.     move.b    d1,(a0)+
  303.     move.b    (a1)+,(a0)+
  304.     add.b    d0,d1
  305.     move.b    d1,(a0)+
  306.     move.b    d3,(a0)+
  307.     move.l    (a2)+,(a0)+
  308. ;    move.l    (a2)+,(a0)+
  309. ;    move.l    (a2)+,(a0)+
  310. ;    move.l    (a2)+,(a0)+
  311. ;    move.l    (a2)+,(a0)+
  312. ;    move.l    (a2)+,(a0)+
  313. ;    move.l    (a2)+,(a0)+
  314.     add.b    #1,d1
  315.     bcc.B    stars1inst_j1
  316.     moveq    #6,d3    
  317. stars1inst_j1:
  318.     dbf    d2,stars1inst_l1    
  319.     move.l    #0,(a0)+
  320.     rts
  321.     
  322. * installieren der 2. stars *******************************
  323.  
  324. stars2inst:
  325.     lea    stars2mem,a0
  326.     move.w    #starsstrt,d1
  327.     moveq    #0,d3
  328.     moveq    #1,d0
  329.     moveq    #anz2,d2
  330. stars2inst_l1:
  331.     lea    star2,a2
  332.     move.b    d1,(a0)+
  333.     move.b    (a1)+,(a0)+
  334.     add.b    d0,d1
  335.     move.b    d1,(a0)+
  336.     move.b    d3,(a0)+
  337.     move.l    (a2)+,(a0)+
  338. ;    move.l    (a2)+,(a0)+
  339. ;    move.l    (a2)+,(a0)+
  340. ;    move.l    (a2)+,(a0)+
  341. ;    move.l    (a2)+,(a0)+
  342.     addq.b    #1,d1
  343.     bcc.B    stars2inst_j1
  344.     moveq    #6,d3    
  345. stars2inst_j1:
  346.     dbf    d2,stars2inst_l1    
  347.     move.l    #0,(a0)+
  348.     rts
  349.  
  350. * installieren der 3. stars *******************************
  351.  
  352. stars3inst:
  353.     lea    stars3mem,a0
  354.     move.w    #starsstrt,d1
  355.     moveq    #0,d3
  356.     moveq    #1,d0
  357.     moveq    #anz3,d2
  358. stars3inst_l1:
  359.     lea    star3,a2
  360.     move.b    d1,(a0)+
  361.     move.b    (a1)+,(a0)+
  362.     add.b    d0,d1
  363.     move.b    d1,(a0)+
  364.     move.b    d3,(a0)+
  365.     move.l    (a2)+,(a0)+
  366. ;    move.l    (a2)+,(a0)+
  367. ;    move.l    (a2)+,(a0)+
  368.     addq.b    #1,d1
  369.     bcc.B    stars3inst_j1
  370.     moveq    #6,d3    
  371. stars3inst_j1:
  372.     dbf    d2,stars3inst_l1    
  373.     move.l    #0,(a0)+
  374.     rts
  375.  
  376. * bewegen der 1 stars *************************************
  377.  
  378. stars1move:
  379.     lea    stars1mem+1,a0
  380.     moveq    #anz1,d0
  381. stars1move_l1:
  382.     addq.b    #2,(a0)
  383.     add.l    #8,a0
  384.     dbf    d0,stars1move_l1
  385.     rts
  386.  
  387. * bewegen der 2 stars *************************************
  388.  
  389. stars2move:
  390.     lea    stars2mem+1,a0
  391.     moveq    #anz2,d0
  392. stars2move_l1:
  393.     addq.b    #1,(a0)
  394.     add.l    #8,a0
  395.     dbf    d0,stars2move_l1
  396.     rts
  397.  
  398. * bewegen der 3 stars *************************************
  399.  
  400. stars3move:
  401.     lea    stars3mem+1,a0
  402.     moveq    #anz3,d0
  403. stars3move_l1:
  404.     bchg    #0,2(a0)
  405.     beq.B    stars3move_j1
  406.     addq.b    #1,(a0)
  407. stars3move_j1:
  408.     add.l    #8,a0
  409.     dbf    d0,stars3move_l1
  410.     rts
  411.         
  412. * 1 Star **************************************************
  413. star1:
  414.     dc.w    %0000000000000001,%0000000000000000
  415.  
  416. * 2 Star **************************************************
  417.  
  418. star2:
  419.     dc.w    %0000000000000000,%0000000000000001
  420.  
  421. * 3 Star **************************************************
  422.  
  423. star3:
  424.     dc.w    %0000000000000001,%0000000000000000
  425.  
  426. **************************************************
  427. wmouse:
  428.     btst    #6,$bfe001
  429.     bne    wmouse
  430.     rts
  431. **************************************************
  432.  
  433. * move bitplanes ******************************************
  434.  
  435. movebtpl:
  436.     cmp.w    #-1,flag1
  437.     beq.w    movebtpl_j1
  438.     sub.l    d0,d0
  439. m1:    move.w    addmove1,d0
  440.     move.l    move,a0
  441.     move.w    (a0,d0.w),d1
  442.     move.w    2(a0,d0.w),d3
  443.     move.w    d1,d0
  444.  
  445.     and.w    #$f,d1
  446.     move.w    con1+2,d2
  447.     and.w    #$f0,d2
  448.     add.w    d2,d1
  449.     move.w    d1,con1+2
  450.     
  451.     move.l    #screens+32-[144*20],d1
  452.     mulu    #48*3,d3
  453.     lsr.w    #4,d0
  454.     lsl.w    #1,d0
  455.     sub.l    d0,d1
  456.     add.l    d3,d1
  457.     move.w    d1,bp1+2
  458.     swap    d1
  459.     move.w    d1,bp1-2
  460.  
  461.  
  462. m2:    move.w    addmove1,d0
  463.     add.w    #12,d0
  464.     move.l    move,a0
  465.     move.w    (a0,d0.w),d1
  466.     move.w    2(a0,d0.w),d3
  467.     move.w    d1,d0
  468.  
  469.     and.w    #$f,d1
  470.     move.w    con1+2,d2
  471.     and.w    #$f,d2
  472.     lsl.w    #4,d1
  473.     add.w    d2,d1
  474.     move.w    d1,con1+2
  475.     
  476.     move.l    #screens+32-[144*20],d1
  477.     mulu    #48*3,d3
  478.     lsr.w    #4,d0
  479.     lsl.w    #1,d0
  480.     sub.l    d0,d1
  481.     add.l    d3,d1
  482.     move.w    d1,bp2+2
  483.     swap    d1
  484.     move.w    d1,bp2-2
  485.     
  486. me:    sub.w    #24,addmove1    
  487.     cmp.w    #-96,addmove1
  488.     bne.B    movebtpl_j1
  489.     move.w    #$f0,con1+2
  490. ;    sub.w    #144,bp2+2
  491.     move.w    #-1,flag1
  492. movebtpl_j1:
  493.     rts
  494.  
  495.  
  496. addmove1:    dc.w    2520
  497. flag1:        dc.w    0
  498. move:    dc.l    0
  499.  
  500.     
  501. anz=9*31+1
  502. mgpg:
  503.     move.w    #0,pointer1
  504.     move.w    #0,xpos
  505.     move.w    #0,ypos
  506. mgpg_l1:
  507.     bsr.w    take
  508.     bsr.B    find
  509.     bsr.w    xyct
  510.     bsr.w    draw
  511.     lea    pointer1(pc),a2
  512.     cmp.w    #0,(a2)
  513.     bne.S    mgpg_l1
  514. mgpg_l2:
  515.     move.w    #0,flag6
  516.     rts
  517. clr:    lea    screens-$8000,a0
  518.     lea    screens-$8000+$26000,a1
  519. clr_l1:
  520.     move.l    #0,(a0)+
  521.     cmp.l    a0,a1
  522.     bne.S    clr_l1
  523.     rts
  524. find:
  525.     moveq    #0,d1
  526.     lea    mask(pc),a0
  527. find_l1:
  528.     cmp.w    #255,d1
  529.     beq.S    find_j1
  530.     add.w    #1,d1
  531.     move.b    (a0)+,d2
  532.     cmp.b    d0,d2
  533.     bne.S    find_l1
  534. find_j1:
  535.     lea    mask(pc),a2
  536.     sub.l    a2,a0
  537.     sub.l    #1,a0
  538.     lea    $6e000,a1
  539.     cmp.w    #40,a0
  540.     bcs.S    find_l2
  541.     add.l    #6*40,a1
  542. find_l2:    
  543.     add.l    a1,a0
  544.     rts
  545. mask:    dc.b    ` !"#-  ^()  , ./0123456789: <*>? abcdefg`
  546.     dc.b    `hijklmnopqrstuvwxyz`
  547.     even
  548. xpos:    dc.w    0
  549. ypos:    dc.w    0
  550. draw:
  551.     move.w    xpos(pc),d0
  552.     move.w    ypos(pc),d1
  553.     and.l    #$ffff,d1
  554.     mulu    #9*48*3,d1
  555.     lea    screens+$8000+48,a1
  556.     add.w    d0,a1
  557.     add.l    d1,a1
  558.     move.b    000(a0),000(a1)
  559.     move.b    040(a0),048*3(a1)
  560.     move.b    080(a0),096*3(a1)
  561.     move.b    120(a0),144*3(a1)
  562.     move.b    160(a0),192*3(a1)
  563.     move.b    200(a0),240*3(a1)
  564.     move.b    240(a0),288*3(a1)
  565. ;    move.b    280(a0),336*3(a1)
  566.     lea    xpos(pc),a0
  567.     add.w    #1,(a0)
  568.     rts
  569. xyct:
  570.     lea    ypos(pc),a2
  571.     lea    xpos(pc),a3
  572.     move.w    (a3),d0
  573.     cmp.w    #48,d0
  574.     bne.S    xyct_l1
  575.     move.w    #0,(a3)
  576.     add.w    #1,(a2)
  577. xyct_l1:
  578.     rts
  579. take:
  580.     lea    textpicslake(pc),a0
  581.     move.w    pointer2,d0
  582.     move.l    (a0,d0.w),a0
  583.     cmp.l    #0,a0
  584.     bne    take_l3
  585.     move.w    #0,pointer2
  586.     move.l    textpicslake,a0
  587. take_l3:
  588.     cmp.w    #-1,flag6
  589.     bne    take_l2
  590.     lea    $6f200,a0
  591. take_l2:
  592.     move.w    pointer1(pc),d0
  593.     lea    pointer1(pc),a1
  594.     add.w    #1,(a1)
  595.     move.b    (a0,d0.w),d0
  596.     and.l    #$ff,d0
  597.     cmp.b    #$00,d0
  598.     bne.S    take_l1
  599.     move.b    #$20,d0
  600.     move.w    #0,(a1)
  601. take_l1:
  602.     rts
  603. pointer1:    dc.w    0
  604. pointer2:    dc.w    0
  605.  
  606. ****************
  607.     even
  608. svgx:    
  609.     lea    gfxname(pc),a1
  610.     moveq    #0,d0
  611.     move.l    4,a6
  612.     jsr    -552(a6)
  613.     move.l    d0,a0
  614.     add.l    #38,a0
  615.     lea    oldcop(pc),a1
  616.     move.l    (a0),(a1)
  617.     rts
  618.  
  619. oldcop:    dc.l    0
  620. gfxname:    dc.b    `graphics.library`,0
  621.     even
  622.  
  623. **************************************************
  624. part1:
  625.     move.l    #120,d0
  626. part1_l1:
  627.     cmp.b    #$ff,$dff006
  628.     bne    part1_l1
  629.     dbf    d0,part1_l1
  630.     moveq    #0,d4
  631. part1_l2:
  632.     cmp.b    #$ff,$dff006
  633.     bne.B    part1_l2
  634.     lea    part1_colors,a0
  635.     bsr.w    blend
  636.     move.l    #75000000,d0
  637. part1_l3:
  638.     dbf    d0,part1_l3
  639.     add.w    #1,d4
  640.     cmp.w    #40,d4
  641.     bne.B    part1_l2
  642.     rts
  643. blend:
  644.     lea    color1+2,a1
  645.     moveq    #15,d7
  646. nextbit:
  647.     move.w    (a1),d0
  648.     move.w    (a0)+,d1
  649.     cmp.w    d0,d1
  650.     beq.B    nextcolor
  651.     move.w    d0,d2
  652.     move.w    d1,d3
  653.     and.w    #$f,d0
  654.     and.w    #$f,d1
  655.     cmp.w    d1,d0
  656.     beq.B    no_f
  657.     bcc.B    nl_f
  658.     add.w    #$1,(a1)
  659.     bra.B    no_f
  660. nl_f:    sub.w    #$1,(a1)
  661. no_f:    move.w    d2,d0
  662.     move.w    d3,d1
  663.     and.w    #$f0,d0
  664.     and.w    #$f0,d1
  665.     cmp.w    d1,d0
  666.     beq.B    no_f0
  667.     bcc.B    nl_f0
  668.     add.w    #$10,(a1)
  669.     bra.B    no_f0
  670. nl_f0:    sub.w    #$10,(a1)
  671. no_f0:    move.w    d2,d0
  672.     move.w    d3,d1
  673.     and.w    #$f00,d0
  674.     and.w    #$f00,d1
  675.     cmp.w    d1,d0
  676.     beq.B    no_f00
  677.     bcc.B    nl_f00
  678.     add.w    #$100,(a1)
  679.     bra.B    no_f00
  680. nl_f00:    sub.w    #$100,(a1)
  681. no_f00:
  682. nextcolor:
  683.     add.l    #4,a1
  684.     dbra    d7,nextbit
  685.     rts
  686. part1_colors:
  687.     DC.B    $00,$00,$0E,$EE,$0F,$FF,$0D,$DE
  688.     DC.B    $0C,$CD,$0B,$BC,$0A,$AB,$09,$9A
  689.     DC.B    $08,$99,$07,$88,$06,$77,$05,$66
  690.     DC.B    $04,$55,$03,$44,$02,$33,$01,$22
  691. **************************************************
  692. part2:
  693.     move.l    #200,d0
  694. part2_l1:
  695.     cmp.b    #$ff,$dff006
  696.     bne    part2_l1
  697.     dbf    d0,part2_l1
  698.     moveq    #0,d4
  699. part2_l2:
  700.     cmp.b    #$ff,$dff006
  701.     bne.B    part2_l2
  702.     lea    part2_colors,a0
  703.     bsr.w    blend2
  704.     move.l    #75000000,d0
  705. part2_l3:
  706.     dbf    d0,part2_l3
  707.     add.w    #1,d4
  708.     cmp.w    #40,d4
  709.     bne.B    part2_l2
  710.     rts
  711. blend2:
  712.     lea    color2+2,a1
  713.     moveq    #46,d7
  714.     bsr    nextbit
  715.  
  716.     lea    color3+2,a1
  717.     moveq    #46,d7
  718.     lea    part2_colors,a0
  719.     bsr    nextbit
  720.     
  721.     lea    color4+2,a1
  722.     moveq    #8,d7
  723.     lea    part2_colors2,a0
  724.     bra    nextbit
  725.     
  726. part2_colors:
  727.     dc.w    $000,$000,$000,$001,$002,$003,$004,$005
  728.     dc.w    $006,$007,$008,$009,$00a,$00b,$00c,$00d
  729.     dc.w    $00e,$00f,$01f,$02f,$03f,$04f,$05f,$06f
  730.     dc.w    $07f,$06f,$05f,$04f,$03f,$02f,$01f,$00f
  731.     dc.w    $00e,$00d,$00c,$00b,$00a,$009,$008,$007
  732.     dc.w    $006,$005,$004,$003,$002,$001,$000
  733.  
  734. part2_colors2:
  735.     dc.w    $000,$000,$666,$555,$000,$000,$444,$000,$000
  736. **************************************************
  737. part3:
  738. part3_l1:
  739.     moveq    #0,d4
  740. part3_l2:
  741.     lea    part4_colors,a0
  742.     sub.w    #1,count1
  743. part3_l3:
  744.     cmp.w    #0,count1
  745.     bne    part3_end
  746.     move.w    #2,count1
  747. blend3:
  748.     lea    color1+2,a1
  749.     moveq    #15,d7
  750.     bra    nextbit
  751.     
  752. count1:    dc.w    6
  753.  
  754. part3_end:
  755.     rts
  756.  
  757. **************************************************
  758. part4:
  759. part4_l1:
  760.     moveq    #0,d4
  761. part4_l2:
  762.     lea    part4_colors,a0
  763.     sub.w    #1,count2
  764. part4_l3:
  765.     cmp.w    #0,count2
  766.     bne    part4_end
  767.     move.w    #2,count2
  768. blend4:
  769.     lea    color2+2,a1
  770.     moveq    #46,d7
  771.     bsr    nextbit
  772.  
  773.     lea    color3+2,a1
  774.     moveq    #46,d7
  775.     lea    part4_colors,a0
  776.     bsr    nextbit
  777.     
  778.     lea    color4+2,a1
  779.     moveq    #17,d7
  780.     lea    part4_colors,a0
  781.     bra    nextbit
  782.     
  783. part4_colors:
  784.     blk.w    50,0
  785.  
  786. count2:    dc.w    6
  787. count3:    dc.w    60
  788. flag6:    dc.w    0
  789. part4_end:
  790.     rts
  791. ***********************************************
  792. part5:
  793.     andi.b    #$bf,$bfee01
  794.     move.b    $bfec01,d0
  795.     ror.b    #1,d0
  796.     not.b    d0
  797.     lea    part5_dats,a0
  798.     move.w    part5p,d1
  799.     move.b    (a0,d1.w),d2
  800.     cmp.b    #0,d2
  801.     beq    part5_j1
  802.     cmp.b    d2,d0
  803.     bne    part5_end
  804.     add.w    #1,part5p
  805.     rts
  806. part5_j1:
  807.     move.w    #-1,flag6    
  808.     move.w    #0,part5p
  809.     sub.w    #4,pointer2
  810. part5_end:
  811.     rts    
  812. part5_dats:
  813.     dc.b    $33,$18,$22,$17,$36,$24,$21,0
  814. part5p:    dc.w    0    
  815. instmusic:
  816.     move.l    $6c,oldirq+2
  817.     move.l    #newirq,$6c
  818.     bsr    mt_init
  819.     rts
  820. newirq:
  821.     movem.l    d0-d7/a0-a6,-(sp)
  822.     bsr    mt_music
  823.     bsr    stars1move
  824.     bsr    stars2move
  825.     bsr    stars3move
  826.     bsr    colorcycle
  827.     bsr    part5
  828.     cmp.w    #-1,flag2
  829.     bne    newirq_l1
  830.     bsr    part3
  831.     bsr    part4
  832.     sub.w    #1,count3
  833.     bne    newirq_l1
  834.     move.w    #-1,flag3
  835. newirq_l1:
  836.     cmp.w    #-1,flag4
  837.     beq    sptimeout
  838.     move.w    #100,count4
  839.     sub.w    #1,count5
  840.     bne    irqend
  841.     move.w    #3,count5
  842.     bsr    spinst
  843.     bra    irqend
  844. sptimeout:    
  845.     sub.w    #1,count4
  846.     bne    irqend
  847.     move.w    #0,flag4    
  848. irqend:
  849.     movem.l    (sp)+,d0-d7/a0-a6
  850. oldirq:
  851.     jmp    $000000
  852.     
  853. reinstmusic:
  854.     bsr    mt_end
  855.     move.l    oldirq+2,$6c
  856.     rts
  857.  
  858. count4:    dc.w    0
  859. count5:    dc.w    100
  860. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  861. ;­     NoisetrackerV2.0 FASTreplay      ­
  862. ;­  Uses lev6irq - takes 8 rasterlines  ­
  863. ;­ Do not disable Master irq in $dff09a ­
  864. ;­ Used registers: d0-d3/a0-a7|    =INTENA ­
  865. ;­  Mahoney & Kaktus - (C) E.A.S. 1990  ­
  866. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  867.  
  868. mt_data=$70000
  869.  
  870. mt_init:lea    mt_data,a0
  871.     lea    mt_mulu(pc),a1
  872.     move.l    #mt_data+$c,d0
  873.     moveq    #$1f,d1
  874.     moveq    #$1e,d3
  875. mt_lop4:move.l    d0,(a1)+
  876.     add.l    d3,d0
  877.     dbf    d1,mt_lop4
  878.  
  879.     lea    $3b8(a0),a1
  880.     moveq    #$7f,d0
  881.     moveq    #0,d1
  882.     moveq    #0,d2
  883. mt_lop2:move.b    (a1)+,d1
  884.     cmp.b    d2,d1
  885.     ble.s    mt_lop
  886.     move.l    d1,d2
  887. mt_lop:    dbf    d0,mt_lop2
  888.  
  889.     addq.w    #1,d2
  890.  
  891.     asl.l    #8,d2
  892.     asl.l    #2,d2
  893.     lea    4(a1,d2.l),a2
  894.     lea    mt_samplestarts(pc),a1
  895.     add.w    #$2a,a0
  896.     moveq    #$1e,d0
  897. mt_lop3:clr.l    (a2)
  898.     move.l    a2,(a1)+
  899.     moveq    #0,d1
  900.     move.b    d1,2(a0)
  901.     move.w    (a0),d1
  902.     asl.l    #1,d1
  903.     add.l    d1,a2
  904.     add.l    d3,a0
  905.     dbf    d0,mt_lop3
  906.  
  907.     move.l    $78.w,mt_oldirq-mt_samplestarts-$7c(a1)
  908.     move.b    #6,mt_speed-mt_samplestarts-$7c(a1)
  909.     moveq    #0,d0
  910.     lea    $dff000,a0
  911.     move.w    d0,$a8(a0)
  912.     move.w    d0,$b8(a0)
  913.     move.w    d0,$c8(a0)
  914.     move.w    d0,$d8(a0)
  915.     move.b    d0,mt_songpos-mt_samplestarts-$7c(a1)
  916.     move.b    d0,mt_counter-mt_samplestarts-$7c(a1)
  917.     move.w    d0,mt_pattpos-mt_samplestarts-$7c(a1)
  918.     rts
  919.  
  920.  
  921. mt_end:    moveq    #0,d0
  922.     lea    $dff000,a0
  923.     move.w    d0,$a8(a0)
  924.     move.w    d0,$b8(a0)
  925.     move.w    d0,$c8(a0)
  926.     move.w    d0,$d8(a0)
  927.     move.w    #$f,$dff096
  928.     rts
  929.  
  930.  
  931. mt_music:
  932.     lea    mt_data,a0
  933.     lea    mt_voice1(pc),a4
  934.     addq.b    #1,mt_counter-mt_voice1(a4)
  935.     move.b    mt_counter(pc),d0
  936.     cmp.b    mt_speed(pc),d0
  937.     blt.w    mt_nonew
  938.     moveq    #0,d0
  939.     move.b    d0,mt_counter-mt_voice1(a4)
  940.     move.w    d0,mt_dmacon-mt_voice1(a4)
  941.     lea    mt_data,a0
  942.     lea    $3b8(a0),a2
  943.     lea    $43c(a0),a0
  944.  
  945.     moveq    #0,d1
  946.     move.b    mt_songpos(pc),d0
  947.     move.b    (a2,d0.w),d1
  948.     lsl.w    #8,d1
  949.     lsl.w    #2,d1
  950.     add.w    mt_pattpos(pc),d1
  951.  
  952.     lea    $dff0a0,a5
  953.     lea    mt_samplestarts-4(pc),a1
  954.     lea    mt_playvoice(pc),a6
  955.     jsr    (a6)
  956.     addq.l    #4,d1
  957.     lea    $dff0b0,a5
  958.     lea    mt_voice2(pc),a4
  959.     jsr    (a6)
  960.     addq.l    #4,d1
  961.     lea    $dff0c0,a5
  962.     lea    mt_voice3(pc),a4
  963.     jsr    (a6)
  964.     addq.l    #4,d1
  965.     lea    $dff0d0,a5
  966.     lea    mt_voice4(pc),a4
  967.     jsr    (a6)
  968.  
  969.     move.w    mt_dmacon(pc),d0
  970.     beq.s    mt_nodma
  971.  
  972.     lea    $bfd000,a3
  973.     move.b    #$7f,$d00(a3)
  974.     move.w    #$2000,$dff09c
  975.     move.w    #$a000,$dff09a
  976.     move.l    #mt_irq1,$78.w
  977.     moveq    #0,d0
  978.     move.b    d0,$e00(a3)
  979.     move.b    #$a8,$400(a3)
  980.     move.b    d0,$500(a3)
  981.     or.w    #$8000,mt_dmacon-mt_voice4(a4)
  982.     move.b    #$11,$e00(a3)
  983.     move.b    #$81,$d00(a3)
  984.  
  985. mt_nodma:
  986.     add.w    #$10,mt_pattpos-mt_voice4(a4)
  987.     cmp.w    #$400,mt_pattpos-mt_voice4(a4)
  988.     bne.s    mt_exit
  989. mt_next:clr.w    mt_pattpos-mt_voice4(a4)
  990.     clr.b    mt_break-mt_voice4(a4)
  991.     addq.b    #1,mt_songpos-mt_voice4(a4)
  992.     and.b    #$7f,mt_songpos-mt_voice4(a4)
  993.     move.b    -2(a2),d0
  994.     cmp.b    mt_songpos(pc),d0
  995.     bne.s    mt_exit
  996.     move.b    -1(a2),mt_songpos-mt_voice4(a4)
  997. mt_exit:tst.b    mt_break-mt_voice4(a4)
  998.     bne.s    mt_next
  999.     rts
  1000.  
  1001. mt_nonew:
  1002.     lea    $dff0a0,a5
  1003.     lea    mt_com(pc),a6
  1004.     jsr    (a6)
  1005.     lea    mt_voice2(pc),a4
  1006.     lea    $dff0b0,a5
  1007.     jsr    (a6)
  1008.     lea    mt_voice3(pc),a4
  1009.     lea    $dff0c0,a5
  1010.     jsr    (a6)
  1011.     lea    mt_voice4(pc),a4
  1012.     lea    $dff0d0,a5
  1013.     jsr    (a6)
  1014.     tst.b    mt_break-mt_voice4(a4)
  1015.     bne.s    mt_next
  1016.     rts
  1017.  
  1018. mt_irq1:tst.b    $bfdd00
  1019.     move.w    mt_dmacon(pc),$dff096
  1020.     move.l    #mt_irq2,$78.w
  1021.     move.w    #$2000,$dff09c
  1022.     rte
  1023.  
  1024. mt_irq2:tst.b    $bfdd00
  1025.     movem.l    a3/a4,-(a7)
  1026.     lea    mt_voice1(pc),a4
  1027.     lea    $dff000,a3
  1028.     move.l    $a(a4),$a0(a3)
  1029.     move.w    $e(a4),$a4(a3)
  1030.     move.l    $a+$1c(a4),$b0(a3)
  1031.     move.w    $e+$1c(a4),$b4(a3)
  1032.     move.l    $a+$38(a4),$c0(a3)
  1033.     move.w    $e+$38(a4),$c4(a3)
  1034.     move.l    $a+$54(a4),$d0(a3)
  1035.     move.w    $e+$54(a4),$d4(a3)
  1036.     movem.l    (a7)+,a3/a4
  1037.     move.b    #0,$bfde00
  1038.     move.b    #$7f,$bfdd00
  1039.     move.l    mt_oldirq(pc),$78.w
  1040.     move.w    #$2000,$dff09c
  1041.     move.w    #$2000,$dff09a
  1042.     rte
  1043.  
  1044. mt_playvoice:
  1045.     move.l    (a0,d1.l),(a4)
  1046.     moveq    #0,d2
  1047.     move.b    2(a4),d2
  1048.     lsr.b    #4,d2
  1049.     move.b    (a4),d0
  1050.     and.b    #$f0,d0
  1051.     or.b    d0,d2
  1052.     beq.w    mt_oldinstr
  1053.  
  1054.     asl.w    #2,d2
  1055.     move.l    (a1,d2.l),4(a4)
  1056.     move.l    mt_mulu(pc,d2.w),a3
  1057.     move.w    (a3)+,8(a4)
  1058.     move.w    (a3)+,$12(a4)
  1059.     move.l    4(a4),d0
  1060.     moveq    #0,d3
  1061.     move.w    (a3)+,d3
  1062.     beq.w    mt_noloop
  1063.     asl.w    #1,d3
  1064.     add.l    d3,d0
  1065.     move.l    d0,$a(a4)
  1066.     move.w    -2(a3),d0
  1067.     add.w    (a3),d0
  1068.     move.w    d0,8(a4)
  1069.     bra.w    mt_hejaSverige
  1070.  
  1071. mt_mulu:blk.l    $20,0
  1072.  
  1073. mt_noloop:
  1074.     add.l    d3,d0
  1075.     move.l    d0,$a(a4)
  1076. mt_hejaSverige:
  1077.     move.w    (a3),$e(a4)
  1078.     move.w    $12(a4),8(a5)
  1079.  
  1080. mt_oldinstr:
  1081.     move.w    (a4),d3
  1082.     and.w    #$fff,d3
  1083.     beq.w    mt_com2
  1084.     tst.w    8(a4)
  1085.     beq.s    mt_stopsound
  1086.     move.b    2(a4),d0
  1087.     and.b    #$f,d0
  1088.     cmp.b    #5,d0
  1089.     beq.s    mt_setport
  1090.     cmp.b    #3,d0
  1091.     beq.s    mt_setport
  1092.  
  1093.     move.w    d3,$10(a4)
  1094.     move.w    $1a(a4),$dff096
  1095.     clr.b    $19(a4)
  1096.  
  1097.     move.l    4(a4),(a5)
  1098.     move.w    8(a4),4(a5)
  1099.     move.w    $10(a4),6(a5)
  1100.  
  1101.     move.w    $1a(a4),d0
  1102.     or.w    d0,mt_dmacon-mt_playvoice(a6)
  1103.     bra.w    mt_com2
  1104.  
  1105. mt_stopsound:
  1106.     move.w    $1a(a4),$dff096
  1107.     bra.w    mt_com2
  1108.  
  1109. mt_setport:
  1110.     move.w    (a4),d2
  1111.     and.w    #$fff,d2
  1112.     move.w    d2,$16(a4)
  1113.     move.w    $10(a4),d0
  1114.     clr.b    $14(a4)
  1115.     cmp.w    d0,d2
  1116.     beq.s    mt_clrport
  1117.     bge.w    mt_com2
  1118.     move.b    #1,$14(a4)
  1119.     bra.w    mt_com2
  1120. mt_clrport:
  1121.     clr.w    $16(a4)
  1122.     rts
  1123.  
  1124. mt_port:moveq    #0,d0
  1125.     move.b    3(a4),d2
  1126.     beq.s    mt_port2
  1127.     move.b    d2,$15(a4)
  1128.     move.b    d0,3(a4)
  1129. mt_port2:
  1130.     tst.w    $16(a4)
  1131.     beq.s    mt_rts
  1132.     move.b    $15(a4),d0
  1133.     tst.b    $14(a4)
  1134.     bne.s    mt_sub
  1135.     add.w    d0,$10(a4)
  1136.     move.w    $16(a4),d0
  1137.     cmp.w    $10(a4),d0
  1138.     bgt.s    mt_portok
  1139.     move.w    $16(a4),$10(a4)
  1140.     clr.w    $16(a4)
  1141. mt_portok:
  1142.     move.w    $10(a4),6(a5)
  1143. mt_rts:    rts
  1144.  
  1145. mt_sub:    sub.w    d0,$10(a4)
  1146.     move.w    $16(a4),d0
  1147.     cmp.w    $10(a4),d0
  1148.     blt.s    mt_portok
  1149.     move.w    $16(a4),$10(a4)
  1150.     clr.w    $16(a4)
  1151.     move.w    $10(a4),6(a5)
  1152.     rts
  1153.  
  1154. mt_sin:
  1155.     dc.b $00,$18,$31,$4a,$61,$78,$8d,$a1,$b4,$c5,$d4,$e0,$eb,$f4,$fa,$fd
  1156.     dc.b $ff,$fd,$fa,$f4,$eb,$e0,$d4,$c5,$b4,$a1,$8d,$78,$61,$4a,$31,$18
  1157.  
  1158. mt_vib:    move.b    $3(a4),d0
  1159.     beq.s    mt_vib2
  1160.     move.b    d0,$18(a4)
  1161.  
  1162. mt_vib2:move.b    $19(a4),d0
  1163.     lsr.w    #2,d0
  1164.     and.w    #$1f,d0
  1165.     moveq    #0,d2
  1166.     move.b    mt_sin(pc,d0.w),d2
  1167.     move.b    $18(a4),d0
  1168.     and.w    #$f,d0
  1169.     mulu    d0,d2
  1170.     lsr.w    #7,d2
  1171.     move.w    $10(a4),d0
  1172.     tst.b    $19(a4)
  1173.     bmi.s    mt_vibsub
  1174.     add.w    d2,d0
  1175.     bra.s    mt_vib3
  1176. mt_vibsub:
  1177.     sub.w    d2,d0
  1178. mt_vib3:move.w    d0,6(a5)
  1179.     move.b    $18(a4),d0
  1180.     lsr.w    #2,d0
  1181.     and.w    #$3c,d0
  1182.     add.b    d0,$19(a4)
  1183.     rts
  1184.  
  1185.  
  1186. mt_arplist:
  1187.     dc.b 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1
  1188.  
  1189. mt_arp:    moveq    #0,d0
  1190.     move.b    mt_counter(pc),d0
  1191.     move.b    mt_arplist(pc,d0.w),d0
  1192.     beq.s    mt_normper
  1193.     cmp.b    #2,d0
  1194.     beq.s    mt_arp2
  1195. mt_arp1:move.b    3(a4),d0
  1196.     lsr.w    #4,d0
  1197.     bra.s    mt_arpdo
  1198. mt_arp2:move.b    3(a4),d0
  1199.     and.w    #$f,d0
  1200. mt_arpdo:
  1201.     asl.w    #1,d0
  1202.     move.w    $10(a4),d1
  1203.     lea    mt_periods(pc),a0
  1204. mt_arp3:cmp.w    (a0)+,d1
  1205.     blt.s    mt_arp3
  1206.     move.w    -2(a0,d0.w),6(a5)
  1207.     rts
  1208.  
  1209. mt_normper:
  1210.     move.w    $10(a4),6(a5)
  1211.     rts
  1212.  
  1213. mt_com:    move.w    2(a4),d0
  1214.     and.w    #$fff,d0
  1215.     beq.s    mt_normper
  1216.     move.b    2(a4),d0
  1217.     and.b    #$f,d0
  1218.     beq.s    mt_arp
  1219.     cmp.b    #6,d0
  1220.     beq.s    mt_volvib
  1221.     cmp.b    #4,d0
  1222.     beq.w    mt_vib
  1223.     cmp.b    #5,d0
  1224.     beq.s    mt_volport
  1225.     cmp.b    #3,d0
  1226.     beq.w    mt_port
  1227.     cmp.b    #1,d0
  1228.     beq.s    mt_portup
  1229.     cmp.b    #2,d0
  1230.     beq.s    mt_portdown
  1231.     move.w    $10(a4),6(a5)
  1232.     cmp.b    #$a,d0
  1233.     beq.s    mt_volslide
  1234.     rts
  1235.  
  1236. mt_portup:
  1237.     moveq    #0,d0
  1238.     move.b    3(a4),d0
  1239.     sub.w    d0,$10(a4)
  1240.     move.w    $10(a4),d0
  1241.     cmp.w    #$71,d0
  1242.     bpl.s    mt_portup2
  1243.     move.w    #$71,$10(a4)
  1244. mt_portup2:
  1245.     move.w    $10(a4),6(a5)
  1246.     rts
  1247.  
  1248. mt_portdown:
  1249.     moveq    #0,d0
  1250.     move.b    3(a4),d0
  1251.     add.w    d0,$10(a4)
  1252.     move.w    $10(a4),d0
  1253.     cmp.w    #$358,d0
  1254.     bmi.s    mt_portdown2
  1255.     move.w    #$358,$10(a4)
  1256. mt_portdown2:
  1257.     move.w    $10(a4),6(a5)
  1258.     rts
  1259.  
  1260. mt_volvib:
  1261.      bsr.w    mt_vib2
  1262.      bra.s    mt_volslide
  1263. mt_volport:
  1264.      bsr.w    mt_port2
  1265.  
  1266. mt_volslide:
  1267.     moveq    #0,d0
  1268.     move.b    3(a4),d0
  1269.     lsr.b    #4,d0
  1270.     beq.s    mt_vol3
  1271.     add.b    d0,$13(a4)
  1272.     cmp.b    #$40,$13(a4)
  1273.     bmi.s    mt_vol2
  1274.     move.b    #$40,$13(a4)
  1275. mt_vol2:move.w    $12(a4),8(a5)
  1276.     rts
  1277.  
  1278. mt_vol3:move.b    3(a4),d0
  1279.     and.b    #$f,d0
  1280.     sub.b    d0,$13(a4)
  1281.     bpl.s    mt_vol4
  1282.     clr.b    $13(a4)
  1283. mt_vol4:move.w    $12(a4),8(a5)
  1284.     rts
  1285.  
  1286. mt_com2:move.b    2(a4),d0
  1287.     and.b    #$f,d0
  1288.     beq.w    mt_rts
  1289.     cmp.b    #$e,d0
  1290.     beq.s    mt_filter
  1291.     cmp.b    #$d,d0
  1292.     beq.s    mt_pattbreak
  1293.     cmp.b    #$b,d0
  1294.     beq.s    mt_songjmp
  1295.     cmp.b    #$c,d0
  1296.     beq.s    mt_setvol
  1297.     cmp.b    #$f,d0
  1298.     beq.s    mt_setspeed
  1299.     rts
  1300.  
  1301. mt_filter:
  1302.     move.b    3(a4),d0
  1303.     and.b    #1,d0
  1304.     asl.b    #1,d0
  1305.     and.b    #$fd,$bfe001
  1306.     or.b    d0,$bfe001
  1307.     rts
  1308.  
  1309. mt_pattbreak:
  1310.     move.b    #1,mt_break-mt_playvoice(a6)
  1311.     rts
  1312.  
  1313. mt_songjmp:
  1314.     move.b    #1,mt_break-mt_playvoice(a6)
  1315.     move.b    3(a4),d0
  1316.     subq.b    #1,d0
  1317.     move.b    d0,mt_songpos-mt_playvoice(a6)
  1318.     rts
  1319.  
  1320. mt_setvol:
  1321.     cmp.b    #$40,3(a4)
  1322.     bls.s    mt_sv2
  1323.     move.b    #$40,3(a4)
  1324. mt_sv2:    moveq    #0,d0
  1325.     move.b    3(a4),d0
  1326.     move.b    d0,$13(a4)
  1327.     move.w    d0,8(a5)
  1328.     rts
  1329.  
  1330. mt_setspeed:
  1331.     moveq    #0,d0
  1332.     move.b    3(a4),d0
  1333.     cmp.b    #$1f,d0
  1334.     bls.s    mt_sp2
  1335.     moveq    #$1f,d0
  1336. mt_sp2:    tst.w    d0
  1337.     bne.s    mt_sp3
  1338.     moveq    #1,d0
  1339. mt_sp3:    move.b    d0,mt_speed-mt_playvoice(a6)
  1340.     rts
  1341.  
  1342. mt_periods:
  1343.     dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c,$023a,$021a,$01fc,$01e0
  1344.     dc.w $01c5,$01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d,$010d,$00fe
  1345.     dc.w $00f0,$00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097,$008f,$0087
  1346.     dc.w $007f,$0078,$0071,$0000
  1347.  
  1348. mt_speed:    dc.b    6
  1349. mt_counter:    dc.b    0
  1350. mt_pattpos:    dc.w    0
  1351. mt_songpos:    dc.b    0
  1352. mt_break:    dc.b    0
  1353. mt_dmacon:    dc.w    0
  1354. mt_samplestarts:blk.l    $1f,0
  1355. mt_voice1:    blk.w    13,0
  1356.         dc.w    1
  1357. mt_voice2:    blk.w    13,0
  1358.         dc.w    2
  1359. mt_voice3:    blk.w    13,0
  1360.         dc.w    4
  1361. mt_voice4:    blk.w    13,0
  1362.         dc.w    8
  1363. mt_oldirq:    dc.l    0
  1364.  
  1365. **************************************************
  1366. spinst:
  1367.     lea    sptab,a0
  1368.     move.w    sptabp,d0
  1369.     move.l    (a0,d0.w),d0
  1370.     add.w    #4,sptabp
  1371.     cmp.l    #0,d0
  1372.     beq    spinst_end
  1373. inst_it:
  1374.     move.w    d0,sp6l+2
  1375.     swap    d0
  1376.     move.w    d0,sp6h+2
  1377.     swap    d0
  1378.     add.l    #16*2*2+4,d0
  1379.     move.w    d0,sp7l+2
  1380.     swap    d0
  1381.     move.w    d0,sp7h+2
  1382.     rts
  1383. spinst_end:
  1384.     move.w    #0,sptabp
  1385.     move.w    #-1,flag4
  1386.     lea    sppos,a0
  1387.     move.w    spposp,d0
  1388.     move.l    (a0,d0.w),d0
  1389.     cmp.l    #0,d0
  1390.     bne    nospposreset
  1391.     move.w    #0,spposp
  1392.     move.l    sppos,d0
  1393. nospposreset:    
  1394.     moveq    #5,d1
  1395.     lea    star1_sprite6,a0
  1396. nosppos_l1:
  1397.     move.l    d0,(a0)
  1398.     add.l    #16*2*2+4,a0
  1399.     or.b    #$80,d0
  1400.     move.l    d0,(a0)
  1401.     and.b    #$7f,d0
  1402.     add.l    #16*2*2+4,a0
  1403.     dbf    d1,nosppos_l1
  1404.     add.w    #4,spposp
  1405.     rts
  1406. flag4:    dc.w    0
  1407. sptab:
  1408.     dc.l    star1_sprite6,star2_sprite6,star3_sprite6
  1409.     dc.l    star4_sprite6,star5_sprite6,star6_sprite6
  1410.     dc.l    star6_sprite6,star5_sprite6,star4_sprite6
  1411.     dc.l    star3_sprite6,star2_sprite6,star1_sprite6
  1412.     dc.l    star0_sprite6,0
  1413. sptabp:    dc.w    0
  1414. sppos:
  1415.     dc.l    $20623000  ;t
  1416.     dc.l    $49c55901  ;y
  1417.     dc.l    $6c847c01  ;p
  1418.     dc.l    $49c55901  ;y
  1419.     dc.l    $49c55901  ;y
  1420.     dc.l    $20623000  ;t
  1421.     dc.l    $47945700  ;e
  1422.     dc.l    $47945700  ;e
  1423.     dc.l    $20623000  ;t
  1424.     dc.l    $6c847c01  ;p
  1425.     dc.l    $49c55901  ;y
  1426.     dc.l    $47945700  ;e
  1427.     dc.l    $6c847c01  ;p
  1428.     dc.l    $3d634d00  ;c
  1429.     dc.l    $3d634d00  ;c
  1430.     dc.l    $3d634d00  ;c
  1431.     dc.l    $6c847c01  ;p
  1432.     dc.l    $47945700  ;e
  1433.     dc.l    $49c55901  ;y
  1434.     dc.l    0
  1435. spposp:    dc.w    0
  1436.  
  1437. star1_sprite6: dc.w    $3d63,$4d00
  1438.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1439.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1440.  dc.w    $0000,$0080,$0000,$0000,$0000,$0000,$0000,$0000
  1441.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1442. star1_sprite7: dc.w    $3d63,$4d80
  1443.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1444.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1445.  dc.w    $0000,$0080,$0000,$0000,$0000,$0000,$0000,$0000
  1446.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1447. star2_sprite6: dc.w    $3d63,$4d00
  1448.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1449.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1450.  dc.w    $0000,$0080,$0000,$0000,$0000,$0000,$0000,$0000
  1451.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1452. star2_sprite7: dc.w    $3d63,$4d80
  1453.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1454.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0080,$0080
  1455.  dc.w    $0140,$01c0,$0080,$0080,$0000,$0000,$0000,$0000
  1456.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1457. star3_sprite6: dc.w    $3d63,$4d00
  1458.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1459.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0080,$0080
  1460.  dc.w    $0140,$01c0,$0080,$0080,$0000,$0000,$0000,$0000
  1461.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1462. star3_sprite7: dc.w    $3d63,$4d80
  1463.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1464.  dc.w    $0000,$0000,$0000,$0000,$0080,$0080,$0000,$0080
  1465.  dc.w    $0220,$03e0,$0000,$0080,$0080,$0080,$0000,$0000
  1466.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1467. star4_sprite6: dc.w    $3d63,$4d00
  1468.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1469.  dc.w    $0000,$0000,$0080,$0000,$0000,$0000,$0080,$0080
  1470.  dc.w    $0550,$01c0,$0080,$0080,$0000,$0000,$0080,$0000
  1471.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1472. star4_sprite7: dc.w    $3d63,$4d80
  1473.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1474.  dc.w    $0000,$0000,$0080,$0080,$0080,$0080,$0000,$0080
  1475.  dc.w    $0630,$07f0,$0000,$0080,$0080,$0080,$0080,$0080
  1476.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1477. star5_sprite6: dc.w    $3d63,$4d80
  1478.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1479.  dc.w    $0000,$0080,$0080,$0000,$0000,$0000,$0080,$0080
  1480.  dc.w    $0550,$09c8,$0080,$0080,$0000,$0000,$0080,$0000
  1481.  dc.w    $0000,$0080,$0000,$0000,$0000,$0000,$0000,$0000
  1482. star5_sprite7: dc.w    $3d63,$4d80
  1483.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1484.  dc.w    $0080,$0080,$0080,$0080,$0080,$0080,$0000,$0080
  1485.  dc.w    $0e38,$0ff8,$0000,$0080,$0080,$0080,$0080,$0080
  1486.  dc.w    $0080,$0080,$0000,$0000,$0000,$0000,$0000,$0000
  1487. star6_sprite6: dc.w    $3d63,$4d00
  1488.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0080,$0080
  1489.  dc.w    $0000,$0080,$0080,$0000,$0000,$0000,$0080,$0080
  1490.  dc.w    $1554,$19cc,$0080,$0080,$0000,$0000,$0080,$0000
  1491.  dc.w    $0000,$0080,$0080,$0080,$0000,$0000,$0000,$0000
  1492. star6_sprite7: dc.w    $3d63,$4d80
  1493.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0080,$0080
  1494.  dc.w    $0080,$0080,$0080,$0080,$0080,$0080,$0000,$0080
  1495.  dc.w    $1e3c,$1ffc,$0000,$0080,$0080,$0080,$0080,$0080
  1496.  dc.w    $0080,$0080,$0080,$0080,$0000,$0000,$0000,$0000
  1497. star0_sprite6: dc.w    $0050,$0f00
  1498.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1499.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1500.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1501.  dc.w    $0000,$0080,$0000,$0000,$0000,$0000,$0000,$0000
  1502. star0_sprite7: dc.w    $0050,$0f80
  1503.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1504.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1505.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1506.  dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1507.  
  1508.         
  1509. **************************************************
  1510. instcop:
  1511.     move.l    #cooperlist,$dff080
  1512.     rts
  1513. cooperlist:
  1514.     dc.w    $104,$0ff
  1515.     dc.w    $120,$6
  1516.     dc.w    $122,$c000
  1517.     dc.w    $124,$6
  1518.     dc.w    $126,$c300
  1519.     dc.w    $128,$6
  1520.     dc.w    $12a,$c600
  1521.     dc.w    $12c,$6
  1522.     dc.w    $12e,$fffc
  1523.     dc.w    $130,$6
  1524.     dc.w    $132,$fffc
  1525.     dc.w    $134,$6
  1526.     dc.w    $136,$fffc
  1527. sp6h:    dc.w    $138,$6
  1528. sp6l    dc.w    $13a,$fffc
  1529. sp7h:    dc.w    $13c,$6
  1530. sp7l:    dc.w    $13e,$fffc
  1531.     dc.w    $108,0
  1532.     dc.w    $10a,0
  1533.     dc.w    $102,0
  1534.     dc.w    $008e,$1d71
  1535.     dc.w    $0090,$ffc9
  1536.     dc.w    $0092,$38
  1537.     dc.w    $0094,$d0
  1538.     dc.w    $e0,$7
  1539.     dc.w    $e2,$b000
  1540.     dc.w    $e4,$7
  1541.     dc.w    $e6,$b000+[106*40]
  1542.     dc.w    $e8,$7
  1543.     dc.w    $ea,$b000+[106*40*2]
  1544.     dc.w    $ec,$7
  1545.     dc.w    $ee,$b000+[106*40*3]
  1546.     dc.w    $100,$4000
  1547.  
  1548. color1:    dc.w    $180,$000
  1549.     dc.w    $182,$000
  1550.     dc.w    $184,$000
  1551.     dc.w    $186,$000
  1552.     dc.w    $188,$000
  1553.     dc.w    $18a,$000
  1554.     dc.w    $18c,$000
  1555.     dc.w    $18e,$000
  1556.     dc.w    $190,$000
  1557.     dc.w    $192,$000
  1558.     dc.w    $194,$000
  1559.     dc.w    $196,$000
  1560.     dc.w    $198,$000
  1561.     dc.w    $19a,$000
  1562.     dc.w    $19c,$000
  1563.     dc.w    $19e,$000
  1564.  
  1565.     dc.w    $8709,$fffe
  1566.     dc.w    $100,0
  1567.     dc.w    $108,96
  1568.     dc.w    $10a,96
  1569.     dc.w    $0092,$20
  1570.     dc.w    $0094,$d8
  1571.     dc.w    $8809,$fffe
  1572. color4:    dc.w    $180,$000
  1573.     dc.w    $1a0,$0
  1574.     dc.w    $1a2,$0
  1575.     dc.w    $1a4,$0
  1576.     dc.w    $1a6,$0
  1577.     dc.w    $1a8,$0
  1578.     dc.w    $1aa,$0
  1579.     dc.w    $1ac,$0
  1580.     dc.w    $1ae,$0
  1581.     dc.w    $182,$aaa
  1582.     dc.w    $184,$666
  1583.     dc.w    $186,$aaa
  1584.  
  1585.     dc.w    $1be,$444
  1586.     dc.w    $1bc,$666
  1587.     dc.w    $1ba,$888
  1588.     dc.w    $1b8,$aaa
  1589.     dc.w    $1b6,$ccc
  1590.     dc.w    $1b4,$eee
  1591.     
  1592.     dc.w    $104,$000
  1593.     dc.w    $892d,$fffe
  1594. color2:    dc.w    $180,$000
  1595.     dc.w    $180,$0
  1596.     dc.w    $180,$000
  1597.     dc.w    $180,$0
  1598.     dc.w    $180,$000
  1599.     dc.w    $180,$0
  1600.     dc.w    $180,$000
  1601.     dc.w    $180,$0
  1602.     dc.w    $180,$000
  1603.     dc.w    $180,$0
  1604.     dc.w    $180,$000
  1605.     dc.w    $180,$0
  1606.     dc.w    $180,$000
  1607.     dc.w    $180,$0
  1608.     dc.w    $180,$000
  1609.     dc.w    $180,$0
  1610.     dc.w    $180,$000
  1611.     dc.w    $180,$0
  1612.     dc.w    $180,$000
  1613.     dc.w    $180,$0
  1614.     dc.w    $180,$000
  1615.     dc.w    $180,$0
  1616.     dc.w    $180,$000
  1617.     dc.w    $180,$0
  1618.     dc.w    $180,$000
  1619.     dc.w    $180,$0
  1620.     dc.w    $180,$000
  1621.     dc.w    $180,$0
  1622.     dc.w    $180,$000
  1623.     dc.w    $180,$0
  1624.     dc.w    $180,$000
  1625.     dc.w    $180,$0
  1626.     dc.w    $180,$000
  1627.     dc.w    $180,$0
  1628.     dc.w    $180,$000
  1629.     dc.w    $180,$0
  1630.     dc.w    $180,$000
  1631.     dc.w    $180,$0
  1632.     dc.w    $180,$000
  1633.     dc.w    $180,$0
  1634.     dc.w    $180,$000
  1635.     dc.w    $180,$0
  1636.     dc.w    $180,$000
  1637.     dc.w    $180,$0
  1638.     dc.w    $180,$000
  1639.     dc.w    $180,$0
  1640.     dc.w    $180,$000
  1641.     dc.w    $8a11,$fffe
  1642. con1:    dc.w    $102,0
  1643.     dc.w    $e0,$4
  1644. bp1:    dc.w    $e2,$8000
  1645.     dc.w    $e4,$4
  1646. bp2:    dc.w    $e6,$8000
  1647.     dc.w    $100,$2000
  1648.     dc.w    $100,$2000
  1649.     dc.w    $180,$000
  1650.     dc.w    $8b09,$fffe
  1651.     dc.w    $fe2b,$fffe
  1652.     dc.w    $100,0
  1653. color3:    dc.w    $180,$000
  1654.     dc.w    $180,$0
  1655.     dc.w    $180,$000
  1656.     dc.w    $180,$0
  1657.     dc.w    $180,$000
  1658.     dc.w    $180,$0
  1659.     dc.w    $180,$000
  1660.     dc.w    $180,$0
  1661.     dc.w    $180,$000
  1662.     dc.w    $180,$0
  1663.     dc.w    $180,$000
  1664.     dc.w    $180,$0
  1665.     dc.w    $180,$000
  1666.     dc.w    $180,$0
  1667.     dc.w    $180,$000
  1668.     dc.w    $180,$0
  1669.     dc.w    $180,$000
  1670.     dc.w    $180,$0
  1671.     dc.w    $180,$000
  1672.     dc.w    $180,$0
  1673.     dc.w    $180,$000
  1674.     dc.w    $180,$0
  1675.     dc.w    $180,$000
  1676.     dc.w    $180,$0
  1677.     dc.w    $180,$000
  1678.     dc.w    $180,$0
  1679.     dc.w    $180,$000
  1680.     dc.w    $180,$0
  1681.     dc.w    $180,$000
  1682.     dc.w    $180,$0
  1683.     dc.w    $180,$000
  1684.     dc.w    $180,$0
  1685.     dc.w    $180,$000
  1686.     dc.w    $180,$0
  1687.     dc.w    $180,$000
  1688.     dc.w    $180,$0
  1689.     dc.w    $180,$000
  1690.     dc.w    $180,$0
  1691.     dc.w    $180,$000
  1692.     dc.w    $180,$0
  1693.     dc.w    $180,$000
  1694.     dc.w    $180,$0
  1695.     dc.w    $180,$000
  1696.     dc.w    $180,$0
  1697.     dc.w    $180,$000
  1698.     dc.w    $180,$0
  1699. color5:    dc.w    $180,$000
  1700.     dc.w    $ff09,$fffe
  1701.     dc.w    $108,0
  1702.     dc.w    $10a,0
  1703.     dc.w    $102,0
  1704.     dc.w    $180,0
  1705.     dc.w    $ffff,$fffe
  1706.         
  1707.